﻿using System;
using System.Text;
using System.Collections;

namespace Encriptador_DES_CFB.logica
{
    class AlgoritmoCFB
    {
        AlgoritmoCFB() { }

        public static BitArray[] CFB_Encriptar(BitArray[] entrada, string claveUsuario)
        {
            BitArray[] final = new BitArray[entrada.Length];
            BitArray IV = new BitArray(64);
            //IO.ImprimeBitArray(IV, 8);
            BitArray[] claves = generarClave.generarClaves(claveUsuario);
            for (int i = 0; i < entrada.Length; i++)
            {
                final[i] = XOR.xor(Encriptacion.Encriptar(IV, claves), entrada[i]);
                IV = final[i];
            }
            //Console.WriteLine();
            //IO.ImprimeBitArray(final[entrada.Length - 1], 8);
            return final;
        }

        public static BitArray[] CFB_Desencriptar(BitArray[] entradaEncriptada, string claveUsuario)
        {
            
            BitArray[] normal = new BitArray[entradaEncriptada.Length];
            BitArray IV = new BitArray(64);
            //IO.ImprimeBitArray(IV, 8);
            BitArray[] claves = generarClave.generarClaves(claveUsuario);
            for (int i = 0; i < entradaEncriptada.Length; i++)
            {//dudaaaaaaaaaaaaaaaaa
                normal[i] = XOR.xor(Encriptacion.Encriptar(IV, claves), entradaEncriptada[i]);
                IV = entradaEncriptada[i];
            }
            //IO.ImprimeBitArray(normal[entradaEncriptada.Length - 1], 8);
            return normal;
        }
    }
}
